package org.javaboy.demo.model;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Demo01 {
    public static void main(String[] args) {
        //创建 Spring 容器
        // 容器构建过程中，Bean 就已经被创建了
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //这个方法就是跟容器去要一个 Bean，将来无论是通过何种方式去跟容器要一个 Bean 回来，底层实现都是 getBean 方法
//        ctx.getBean("根据名字获取 Bean，返回 Object，返回之后需要强转")
//        ctx.getBean(根据类型获取 Bean，这个要求该 Bean 在容器中只存在一个实例)
        //根据类型去获取，首先是根据类型查找 beanName，找到名字之后，再调用重载的 getBean("beanName")去获取bean
//        User u = ctx.getBean(User.class);
        User user2 = ctx.getBean("user2",User.class);
        System.out.println("user2 = " + user2);
        User user = ctx.getBean("user", User.class);
        System.out.println("user = " + user);
        Book book = ctx.getBean("book", Book.class);
        System.out.println("book = " + book);
        //执行这个方法，Bean 的销毁的钩子函数就会被调用
        ctx.close();

    }
}
